﻿Imports WiremetModel.Entities.OEM

Public Class NormaView

    '    Private _unitOfWork As UnitOfWork
    '    Private _normaDictionary As Dictionary(Of Integer, Norma)


    '    Public Sub New()

    '        InitializeComponent()
    '        _unitOfWork = New UnitOfWork()
    '        RefreshViewData()
    '        RefreshNormaTable(_normaDictionary.Values.OrderBy(Function(x) x.Nazwa))

    '    End Sub

    '    Private Sub NormaForm_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    '        _unitOfWork.Dispose()
    '    End Sub


    '    Private Sub RefreshViewData()

    '        Dim normaRepository As New Repository(Of Norma)(_unitOfWork.Session)
    '        _normaDictionary = normaRepository.GetAll().ToDictionary(Function(x) x.Id, Function(x) x)

    '    End Sub


    '#Region "Norma"

    '    Private Sub RefreshNormaTable(ByVal normaList As IEnumerable(Of Norma))

    '        dgv_Norma.Rows.Clear()

    '        For Each norma As Norma In normaList
    '            dgv_Norma.Rows.Add(
    '                norma.Id,
    '                norma.Nazwa
    '                )
    '        Next
    '    End Sub

    '    Private Sub EnsureNormaIsSelected()
    '        If dgv_Norma.SelectedRows.Count = 0 Then
    '            Throw New Exception("Proszę, wybierz normnę, aby kontynuować.")
    '        End If
    '    End Sub

    '    Private Function GetSelectedNorma() As Norma
    '        Return _normaDictionary(CInt(dgv_Norma.SelectedRows(0).Cells("NormaId").Value))
    '    End Function

    '    'Private Sub dgv_Norma_SelectionChanged(sender As System.Object, e As EventArgs) Handles dgv_Norma.SelectionChanged
    '    '    If dgv_Norma.SelectedRows.Count > 0 Then
    '    '        Dim selectedNorma As Norma = GetSelectedNorma()
    '    '        RefreshNormaTolerancjaSrednicyTable(selectedNorma.TolerancjeSrednicy.Values.OrderBy(Function(x) x.SrednicaMinimalna))
    '    '        RefreshNormaTolerancjaWytrzymalosciTable(selectedNorma.TolerancjeWytrzymalosci.Values.OrderBy(Function(x) x.SrednicaMinimalna))
    '    '    End If
    '    'End Sub

    '    'Private Sub ts_btn_NormaDodaj_Click(sender As System.Object, e As System.EventArgs) Handles ts_btn_NormaDodaj.Click
    '    '    Try
    '    '        Dim normaDodajDialog As New NormaInputDialog(_unitOfWork)
    '    '        Dim normaDodajDialogResult As DialogResult = normaDodajDialog.ShowDialog()

    '    '        If normaDodajDialogResult = Windows.Forms.DialogResult.OK Then

    '    '            _normaDictionary.Add(normaDodajDialog.Norma.Id, normaDodajDialog.Norma)
    '    '            RefreshNormaTable(_normaDictionary.Values.OrderBy(Function(x) x.Nazwa))

    '    '        End If
    '    '    Catch ex As Exception
    '    '        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    '    '    End Try
    '    'End Sub

    '    'Private Sub ts_btn_NormaEdycja_Click(sender As System.Object, e As System.EventArgs) Handles ts_btn_NormaEdycja.Click
    '    '    Try
    '    '        EnsureNormaIsSelected()
    '    '        Dim normaDodajDialog As New NormaInputDialog(_unitOfWork, GetSelectedNorma())
    '    '        Dim normaDodajDialogResult = normaDodajDialog.ShowDialog()

    '    '        If normaDodajDialogResult = Windows.Forms.DialogResult.OK Then

    '    '            _normaDictionary(normaDodajDialog.Norma.Id) = normaDodajDialog.Norma
    '    '            RefreshNormaTable(_normaDictionary.Values.OrderBy(Function(x) x.Nazwa))

    '    '        End If

    '    '    Catch ex As Exception
    '    '        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    '    '    End Try
    '    'End Sub


    '    Private Sub ts_btn_NormaUsun_Click(sender As System.Object, e As System.EventArgs) Handles ts_btn_NormaUsun.Click
    '        Try
    '            EnsureNormaIsSelected()
    '            Dim confirmationDialogResult As DialogResult = MessageBox.Show("Czy na pewno chcesz usunąć wybraną normę?", "Uwaga!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)

    '            If confirmationDialogResult = Windows.Forms.DialogResult.Yes Then
    '                Dim selectedNorma As Norma = GetSelectedNorma()
    '                Dim gatunekRepository As New Repository(Of Gatunek)(_unitOfWork.Session)
    '                Dim gatunekList = gatunekRepository.GetAll()

    '                If gatunekList.Where(Function(x) Not IsNothing(x.Norma) AndAlso x.Norma.Id = selectedNorma.Id).Any Then
    '                    Throw New Exception("Norma " & selectedNorma.Nazwa & " nie może zostać usunięta." & vbNewLine &
    '                                        "Istnieją gatunki, które odnoszą się do tej normy.")
    '                End If

    '                Dim normaRepository As New Repository(Of Norma)(_unitOfWork.Session)
    '                _unitOfWork.BeginTransaction()
    '                normaRepository.Delete(selectedNorma)
    '                _unitOfWork.CommitTransaction()
    '                _normaDictionary.Remove(selectedNorma.Id)
    '                RefreshNormaTable(_normaDictionary.Values.OrderBy(Function(x) x.Nazwa))

    '            End If
    '        Catch ex As Exception
    '            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    '        End Try
    '    End Sub


    '#End Region

    '#Region "Tolerancja średnicy"

    '    Private Sub RefreshNormaTolerancjaSrednicyTable(ByVal normaTolerancjaSrednicyList As IEnumerable(Of NormaTolerancjaSrednicy))
    '        dgv_TolerancjaSrednica.Rows.Clear()

    '        For Each tolerancjaSrednicy As NormaTolerancjaSrednicy In normaTolerancjaSrednicyList
    '            dgv_TolerancjaSrednica.Rows.Add(
    '                tolerancjaSrednicy.Id,
    '                "[ " & tolerancjaSrednicy.SrednicaMinimalna & " ; " & tolerancjaSrednicy.SrednicaMaksymalna & " )",
    '                tolerancjaSrednicy.TolerancjaUjemna,
    '                tolerancjaSrednicy.TolerancjaDodatnia
    '                )
    '        Next
    '    End Sub

    '    Private Sub EnsureTolerancjaSrednicyIsSelected()
    '        If dgv_TolerancjaSrednica.SelectedRows.Count = 0 Then
    '            Throw New Exception("Proszę, wybierz tolerancję średnicy, aby kontynuować.")
    '        End If
    '    End Sub

    '    Private Function GetSelectedNormaTolerancjaSrednicy(ByVal normaId As Integer) As NormaTolerancjaSrednicy
    '        Return _normaDictionary(normaId).TolerancjeSrednicy((CInt(dgv_TolerancjaSrednica.SelectedRows(0).Cells("NormaTolerancjaSrednicyId").Value)))
    '    End Function

    '    Private Sub btn_TolerancjaSrednicyDodaj_Click(sender As System.Object, e As System.EventArgs)
    '        Try
    '            EnsureNormaIsSelected()
    '            Dim selectedNorma As Norma = GetSelectedNorma()
    '            Dim normaTolerancjaSrednicyDodajDialog As New NormaGatunekTolerancjaSrednicyInputDialog(_unitOfWork, selectedNorma)
    '            Dim normaTolerancjaSrednicyDodajDialogResult As DialogResult = normaTolerancjaSrednicyDodajDialog.ShowDialog()

    '            If normaTolerancjaSrednicyDodajDialogResult = Windows.Forms.DialogResult.OK Then

    '                Dim normaTolerancjaSrednicy As NormaTolerancjaSrednicy = normaTolerancjaSrednicyDodajDialog.NormaTolerancjaSrednicy
    '                _normaDictionary(selectedNorma.Id).TolerancjeSrednicy.Add(normaTolerancjaSrednicy.Id, normaTolerancjaSrednicy)
    '                RefreshNormaTolerancjaSrednicyTable(selectedNorma.TolerancjeSrednicy.Values.OrderBy(Function(x) x.SrednicaMinimalna))

    '            End If
    '        Catch ex As Exception
    '            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    '        End Try
    '    End Sub

    '    Private Sub btn_TolerancjaSrednicyEdytuj_Click(sender As System.Object, e As System.EventArgs)
    '        Try
    '            EnsureNormaIsSelected()
    '            EnsureTolerancjaSrednicyIsSelected()
    '            Dim selectedNorma As Norma = GetSelectedNorma()
    '            Dim normaTolerancjaSrednicyEdytujDialog As New NormaTolerancjaSrednicyInputDialog(_unitOfWork, selectedNorma, GetSelectedNormaTolerancjaSrednicy(selectedNorma.Id))
    '            Dim normaTolerancjaSrednicyEdytujDialogResult As DialogResult = normaTolerancjaSrednicyEdytujDialog.ShowDialog()

    '            If normaTolerancjaSrednicyEdytujDialogResult = Windows.Forms.DialogResult.OK Then

    '                Dim normaTolerancjaSrednicy As NormaTolerancjaSrednicy = normaTolerancjaSrednicyEdytujDialog.NormaTolerancjaSrednicy
    '                _normaDictionary(selectedNorma.Id).TolerancjeSrednicy(normaTolerancjaSrednicy.Id) = normaTolerancjaSrednicy
    '                RefreshNormaTolerancjaSrednicyTable(selectedNorma.TolerancjeSrednicy.Values.OrderBy(Function(x) x.SrednicaMinimalna))

    '            End If
    '        Catch ex As Exception
    '            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    '        End Try
    '    End Sub

    '    Private Sub btn_TolerancjaSrednicyUsun_Click(sender As System.Object, e As System.EventArgs)
    '        Try
    '            EnsureTolerancjaSrednicyIsSelected()
    '            Dim confirmationDialogResult As DialogResult = MessageBox.Show("Czy na pewno chcesz usunąć wybraną tolerancję średnicy?", "Uwaga!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
    '            If confirmationDialogResult = Windows.Forms.DialogResult.Yes Then
    '                Dim norma As Norma = GetSelectedNorma()
    '                Dim normaTolerancjaSrednicy As NormaTolerancjaSrednicy = GetSelectedNormaTolerancjaSrednicy(norma.Id)
    '                _unitOfWork.BeginTransaction()
    '                _normaDictionary(norma.Id).TolerancjeSrednicy.Remove(normaTolerancjaSrednicy.Id)
    '                _unitOfWork.CommitTransaction()
    '                RefreshNormaTolerancjaSrednicyTable(norma.TolerancjeSrednicy.Values.OrderBy(Function(x) x.SrednicaMinimalna))
    '            End If
    '        Catch ex As Exception
    '            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    '        End Try
    '    End Sub

    '#End Region

    '#Region "Tolerancja wytrzymałości"

    '    Private Sub RefreshNormaTolerancjaWytrzymalosciTable(ByVal normaTolerancjaWytrzymalosciList As IEnumerable(Of NormaTolerancjaWytrzymalosci))
    '        dgv_TolerancjaWytrzymalosci.Rows.Clear()

    '        For Each tolerancjaWytrzymalosci As NormaTolerancjaWytrzymalosci In normaTolerancjaWytrzymalosciList
    '            dgv_TolerancjaWytrzymalosci.Rows.Add(
    '                tolerancjaWytrzymalosci.Id,
    '                "[ " & tolerancjaWytrzymalosci.SrednicaMinimalna & " ; " & tolerancjaWytrzymalosci.SrednicaMaksymalna & " )",
    '                tolerancjaWytrzymalosci.TolerancjaUjemna,
    '                tolerancjaWytrzymalosci.TolerancjaDodatnia
    '                )
    '        Next
    '    End Sub

    '    Private Sub EnsureTolerancjaWytrzymalosciIsSelected()
    '        If dgv_TolerancjaWytrzymalosci.SelectedRows.Count = 0 Then
    '            Throw New Exception("Proszę, wybierz tolerancję wytrzymałości, aby kontynuować.")
    '        End If
    '    End Sub

    '    Private Function GetSelectedNormaTolerancjaWytrzymalosci(ByVal normaId As Integer) As NormaTolerancjaWytrzymalosci
    '        Return _normaDictionary(normaId).TolerancjeWytrzymalosci(CInt((dgv_TolerancjaWytrzymalosci.SelectedRows(0).Cells("NormaTolerancjaWytrzymalosciId").Value)))
    '    End Function


    '    Private Sub btn_TolerancjaWytrzynalosciDodaj_Click(sender As System.Object, e As System.EventArgs)
    '        Try
    '            EnsureNormaIsSelected()
    '            Dim selectedNorma As Norma = GetSelectedNorma()
    '            Dim normaTolerancjaWytrzymalosciDodajDialog As New NormaGatunekTolerancjaWytrzymalosciInputDialog(_unitOfWork, selectedNorma)
    '            Dim normaTolerancjaWytrzymalosciDodajDialogResult As DialogResult = normaTolerancjaWytrzymalosciDodajDialog.ShowDialog()

    '            If normaTolerancjaWytrzymalosciDodajDialogResult = Windows.Forms.DialogResult.OK Then

    '                Dim normaTolerancjaWytrzymalosci As NormaTolerancjaWytrzymalosci = normaTolerancjaWytrzymalosciDodajDialog.NormaTolerancjaWytrzymalosci
    '                _normaDictionary(selectedNorma.Id).TolerancjeWytrzymalosci.Add(normaTolerancjaWytrzymalosci.Id, normaTolerancjaWytrzymalosci)
    '                RefreshNormaTolerancjaWytrzymalosciTable(selectedNorma.TolerancjeWytrzymalosci.Values.OrderBy(Function(x) x.SrednicaMinimalna))

    '            End If
    '        Catch ex As Exception
    '            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    '        End Try
    '    End Sub

    '    Private Sub btn_TolerancjaWytrzynalosciEdytuj_Click(sender As System.Object, e As System.EventArgs)
    '        Try
    '            EnsureNormaIsSelected()
    '            EnsureTolerancjaSrednicyIsSelected()
    '            Dim selectedNorma As Norma = GetSelectedNorma()
    '            Dim normaTolerancjaSrednicyEdytujDialog As New NormaTolerancjaSrednicyInputDialog(_unitOfWork, selectedNorma, GetSelectedNormaTolerancjaSrednicy(selectedNorma.Id))
    '            Dim normaTolerancjaSrednicyEdytujDialogResult As DialogResult = normaTolerancjaSrednicyEdytujDialog.ShowDialog()

    '            If normaTolerancjaSrednicyEdytujDialogResult = Windows.Forms.DialogResult.OK Then

    '                Dim normaTolerancjaSrednicy As NormaTolerancjaSrednicy = normaTolerancjaSrednicyEdytujDialog.NormaTolerancjaSrednicy
    '                _normaDictionary(selectedNorma.Id).TolerancjeSrednicy(normaTolerancjaSrednicy.Id) = normaTolerancjaSrednicy
    '                RefreshNormaTolerancjaWytrzymalosciTable(selectedNorma.TolerancjeWytrzymalosci.Values.OrderBy(Function(x) x.SrednicaMinimalna))

    '            End If
    '        Catch ex As Exception
    '            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    '        End Try
    '    End Sub

    '    Private Sub btn_TolerancjaWytrzynalosciUsun_Click(sender As System.Object, e As System.EventArgs)
    '        Try
    '            Try
    '                EnsureTolerancjaWytrzymalosciIsSelected()
    '                Dim confirmationDialogResult As DialogResult = MessageBox.Show("Czy na pewno chcesz usunąć wybraną tolerancję wytrzymałości?", "Uwaga!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
    '                If confirmationDialogResult = Windows.Forms.DialogResult.Yes Then
    '                    Dim norma As Norma = GetSelectedNorma()
    '                    Dim normaTolerancjaWytrzymalosci As NormaTolerancjaSrednicy = GetSelectedNormaTolerancjaSrednicy(norma.Id)
    '                    _unitOfWork.BeginTransaction()
    '                    _normaDictionary(norma.Id).TolerancjeWytrzymalosci.Remove(normaTolerancjaWytrzymalosci.Id)
    '                    _unitOfWork.CommitTransaction()
    '                    RefreshNormaTolerancjaWytrzymalosciTable(norma.TolerancjeWytrzymalosci.Values.OrderBy(Function(x) x.SrednicaMinimalna))
    '                End If
    '            Catch ex As Exception
    '                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    '            End Try
    '        Catch ex As Exception
    '            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    '        End Try
    '    End Sub

    '#End Region






End Class